#include "Geometry.h"
#include <initializer_list>

#define TEMPLATE template <size_t DIM,typename T>

TEMPLATE class Point;

TEMPLATE class Point: public std::valarray<T>, public Geometry
{
public:
    Point();
    Point(const std::initializer_list<T> _com_list);
};

TEMPLATE
Point<DIM, T>::Point() : std::valarray<T>(DIM), Geometry()
{
    vertex.resize(1);//对于一个几何图形（点）而言，只有一个顶点
    boundary.resize(1);//边界也是只有一个点
    neighbor.resize(0);
    dofs.resize(1);//对于点而言只有一个基函数
};

TEMPLATE
Point<DIM,T>::Point(const std::initializer_list<T> _com_list) :
std::valarray<T>(_com_list), Geometry() { };//注意以下对应公有继承初始化只能调用父类的构造函数
